import Vue 			from 'vue'
import util 		from '../../util'
import axios 		from 'axios';
import * as qiniu   from 'qiniu-js';
import { Toast } 	from 'vant';
Vue.use(Toast);

export default {
	name: 'SetUserDropInfo',
	data(){
		return {
			type:1,			//付款方式  1:支付宝  3:微信   2:银行卡
			edit:0,			//是否是编辑 0:新设置   1:编辑支付方式
			loading:false,	//是否提交中
			qrCodeUrl:'',	//上传的图片二维码
			// qrCodeUrl:'https://www.baidu.com/img/bd_logo1.png',	//上传的图片二维码
			name:'',		//账户名(不可更改)
			account:'',		//账号
			bankCode:'',	//银行卡号
			bankName:'',	//银行名称
			id:'',			//编辑的ID信息
		}
	},
	methods:{
		getQiniuToken(){
			Toast.loading({
				message: '图片上传中...',
				duration:0,
				forbidClick: true
			});
			return new Promise((resolve,reject) => {
				util.fetch(`${util.ajaxUrl}/user/qiniu-token`,{
					token:util.getToken(),
					bucket:'bbj'
				}).then(res => {
					if(res.retCode === 0){
						resolve(res.retData.token)
					}else{
						Toast(res.retMsg || '未知错误')
					}
				}).catch(error => {
					console.log(error)
				})
			})
		},
		getImgUrlChange(evfile){
			this.getQiniuToken().then(uptoken=>{
	        	var file = evfile.target.files[0]; //Blob 对象，上传的文件
	        	var key = +new Date();  // 上传后文件资源名以设置的 key 为主，如果 key 为 null 或者 undefined，则文件资源名会以 hash 值作为资源名。
	        	let config = {
	          		useCdnDomain: true,   //表示是否使用 cdn 加速域名，为布尔值，true 表示使用，默认为 false。
	          		region: null     // 根据具体提示修改上传地区,当为 null 或 undefined 时，自动分析上传域名区域
	        	};
	        	let putExtra = {
	          		fname: "",  //文件原文件名
	          		params: {}, //用来放置自定义变量
	          		mimeType: null,  //用来限制上传文件类型，为 null 时表示不对文件类型限制；限制类型放到数组里： ["image/png", "image/jpeg", "image/gif"]
	        	};
	        	var observable = qiniu.upload(file, key, uptoken, putExtra, config);
	        	observable.subscribe({
	          		next: (result) => {
	          			// 主要用来展示进度
	          		},
	          		error: (errResult) => {
	          			// 失败报错信息
	          			Toast.clear();
	            		// alert(JSON.stringify(errResult))
	          		},
	          		complete: (res) => {
	          			// 接收成功后返回的信息
	          			this.qrCodeUrl = `https://n-bkt.deepcoin.me/${res.key}`;
	          			setTimeout(() => {
	          				Toast.clear();
	          			},300)
	          		}
	        	})
	      	})
		},
		getImgUrl(){
			//与app交互，获取图URL
			util.registerHandler('selectImageCallback',res => {
				this.qrCodeUrl = `https://n-bkt.deepcoin.me/${res.urls[0]}`
			})
			util.callHandler('showSelectImage',{
				types:['cameral','library'],
				count:1
			})
		},
		init(){
			//拉取用户名
			util.fetch(`${util.ajaxUrl}/user/verified-info`,{
				token:util.getToken()
			}).then(res => {
				if(res.retCode === 0){
					this.name = res.retData.name;
				}else{
					Toast(res.retMsg || '未知错误')
				}
			}).catch(error => {
				console.log(error)
			})
		},
		init0(){
			//编辑信息(拉取之前配置)
			util.fetch(`${util.ajaxUrl}/transaction/pay-methods`,{
				token:util.getToken()
			}).then(res => {
				if(res.retCode === 0){
					if(res.retData && res.retData.payMethods && Array.isArray(res.retData.payMethods)){
						let _item = res.retData.payMethods.filter(item => item.pay_type == this.type)[0];
						this.qrCodeUrl = _item.qr_img;
						this.name = _item.name;
						this.account = _item.account;
						if(_item.pay_type == 2){
							//若是银行
							this.bankCode = _item.account;
							this.bankName = _item.bank;
						}
						this.id = _item.id;
					}else{
						Toast('数据格式错误')
					}
				}else{
					Toast(res.retMsg || '未知错误')
				}
			}).catch(error => {
				console.log(error)
			})
		},
		confirm(){
			this.checkOut().then(type => {
				this.loading = true;
				let params = {
					token:util.getToken(),
					// qr_img:this.qrCodeUrl,		//图片地址
					type:type,					//类型
					account:this.account		//账号
				}
				if(type == 2){
					//若是银行
					params.bank = this.bankName;
					params.account = this.bankCode;
				}
				if(this.edit == 1){
					//若是编辑，则增加id信息
					params.id = this.id;
				}
				let _url = util.ajaxUrl + (this.edit==0?'/transaction/bind-card':'/transaction/modify-card');
				util.fetch(_url,params).then(res => {
					this.loading = false;
					if(res.retCode === 0){
						Toast(res.retMsg);
						setTimeout(()=>{
							this.goBack('special');
						},1500)
					}else{
						Toast(res.retMsg || '未知错误')
					}
				}).catch(error => {
					console.log(error)
				})
			}).catch(error => {
				//返回reject或者js报错，则停止loading
				this.loading = false;
			})
		},
		checkOut(){
			return new Promise((resolve,reject) => {
				//支付宝或微信输入字段校验
				if(this.type == 1 || this.type == 3){
					// if(!this.qrCodeUrl){
					// 	reject()
					// 	Toast(`${this.type==1?'支付宝':'微信'}收款二维码不能为空`)
					// 	return
					// }
					if(!this.account){
						reject()
						Toast(`${this.type==1?'支付宝':'微信'}账号不能为空`)
						return
					}
					resolve(this.type)
				}else{
					//银行卡字段校验
					let numberTest = new RegExp('^[0-9]*$');
					if(!this.bankCode || !numberTest.test(this.bankCode)){
						reject()
						Toast('请输入正确的银行卡号')
						return
					}
					if(!this.bankName){
						reject()
						Toast('请先输入银行名称')
						return
					}
					resolve(this.type)
				}
			})
		},
		goBack(special){
			util.navigateBack(-1,this,special)
		},
		blur(){
			window.scrollTo(0, 0);
		}
	},
	created() {
		util.waitSDKReady().then(token => {
			this.type = this.$route.query.type;
			this.edit = this.$route.query.edit || 0;
			if(this.edit == 1){
				this.init0();
			}else{
				this.init();
			}
		}).catch((e) => {
			console.log(e)
			Toast('获取token失败')
		})
		setTimeout(() => {
			//退出登录的时候native调用H5方法清除token缓存
			util.registerHandler('loginOutDeleteToken',res => {
				window.token = '';
				this.token = '';
				localStorage.removeItem('token');
			})
			util.callHandler('setStatusBarStyle',{
				style:'dark'
			})
		},500)
    }
}